package topic;

/**
 * @Author: 姚凤桥
 * @Date: 2022/3/28 9:56
 * @Description: 现在有两种袋子，装6个苹果和8个苹果，现在相要购买n个苹果，如果想要将这n个苹果刚好装下，最少需要多少个袋子
 * 如果不能刚好装下，返回-1
 */
public class Topic02 {
    public static void main(String[] args) {
        System.out.println(minBag(50));
    }

    /**
     * 先判断8个苹果袋子的数量，再计算出6个袋子的数量
     *
     * @param n
     * @return
     */
    public static int minBag(int n) {
        if (n % 2 != 0) {
            return -1;
        }
        if (n % 8 == 0) {
            return n / 8;
        }

        int bag6 = -1;
        //8袋子的数量
        int bag8 = n / 8;
        int rest = n % 8;
        //剩余苹果数量大于24可以结束
        while (rest % 6 != 0 && rest < 24) {
            bag8--;
            rest += 8;
            int temp = rest % 6;
            if (temp == 0) {
                bag6 = rest / 6;
            }
        }
        return bag6 == -1 ? -1 : bag6 + bag8;
    }
}
